home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO064.dsk / ADD.ENTER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  21KB  |  302 lines

  1. 100  IF NP < = 1  THEN  HOME : VTAB 10: HTAB 10: PRINT "NOT ENOUGH DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  2. 105  HOME 
  3. 110  PRINT D$;"CHAIN ADD.SORT,@100"
  4. 600  CALL 39169,X$: IF X$ = ""  THEN SX$ = "": RETURN 
  5. 615 SX$ = "": IF  LEN(X$) >30  THEN  FOR J = 1 TO 30:SX$ = SX$ + CHR$( ASC( MID$ (X$,J,1))): NEXT :X$ = SX$:SX$ = "": VTAB 23: PRINT "NOTE - ENTRY HAS BEEN TRUNCATED";: HTAB 1
  6. 630  FOR K = 1 TO  LEN(X$): IF  ASC( MID$ (X$,K,1)) >96  AND  ASC( MID$ (X$,K,1)) <123  THEN SX$ = SX$ + CHR$( ASC( MID$ (X$,K,1)) -32): NEXT K: RETURN 
  7. 640 SX$ = SX$ + MID$ (X$,K,1): NEXT K: RETURN 
  8. 700  HTAB 1: VTAB 7: PRINT "    (F) ";B$(Y);: CALL 64668: HTAB 1: VTAB 8: PRINT "    (L) ";A$(Y);: CALL 64668: HTAB 1: VTAB 9: PRINT "    (S) ";C$(Y);: CALL 64668: HTAB 1: VTAB 10: PRINT "    (C) ";CC$(Y);: CALL 64668: HTAB 1
  9. 741  HTAB 1: VTAB 11: PRINT "    (T) "; LEFT$(E$(Y),12);: IF  MID$ (E$(Y),13,5) = "     "  OR  MID$ (E$(Y),13,5) = ""  THEN  CALL 64668: HTAB 1: GOTO 743
  10. 742  VTAB 11: HTAB 23: PRINT "EXT.NO. "; MID$ (E$(Y),13,5);: CALL 64668: HTAB 1
  11. 743  HTAB 1: VTAB 12: PRINT "        "; MID$ (E$(Y),18,12);: IF  MID$ (E$(Y),30,4) = "    "  OR  MID$ (E$(Y),30,4) = ""  THEN  CALL 64668: HTAB 1: GOTO 745
  12. 744  VTAB 12: HTAB 23: PRINT "EXT.NO. "; MID$ (E$(Y),30,5);: CALL 64668: HTAB 1
  13. 745  VTAB 13: PRINT "______________________________________": RETURN 
  14. 900  HTAB 2: VTAB 23: PRINT " DO YOU WISH TO DELETE THIS DATA ? ";: GET Z$: IF Z$ = "Y"  OR Z$ = "y"  THEN  TEXT : GOSUB 1000: RETURN 
  15. 910  HOME : GOTO 7010
  16. 1000  IF Y = 0  THEN  RETURN 
  17. 1002  IF NP = 1  THEN  GOSUB 1090: RETURN 
  18. 1005  FOR J = Y TO (NP -1):A$(J) = A$(J +1):B$(J) = B$(J +1):SA$(J) = SA$(J +1):SB$(J) = SB$(J +1):C$(J) = C$(J +1):CC$(J) = CC$(J +1):E$(J) = E$(J +1): NEXT J
  19. 1007  IF NP >1  THEN NP = NP -1
  20. 1008 NP% = 1: RETURN 
  21. 1090 A$(1) = "":B$(1) = "":C$(1) = "":CC$(1) = "":E$(1) = "":SA$(1) = "":SB$(1) = "":NP% = 1:NP = 0
  22. 1095  IF NP = 0  THEN NP% = 0
  23. 1100  RETURN 
  24. 2000  HOME 
  25. 2010  PRINT  CHR$(4);"CHAIN ADD.FILE,@11000"
  26. 3000 T2$ = "": FOR J = 1 TO N: GET T1$: IF T1$ =  CHR$(27)  AND K = 2  AND EX < >1  THEN E$(SN) =  LEFT$(E2$,17) +"XX2": POP : HOME : RETURN 
  27. 3035  IF T1$ =  CHR$(27)  AND K = 1  AND EX < >1  THEN E$(SN) = "XX1": POP : GOTO 3460
  28. 3037  IF T1$ =  CHR$(27)  AND EX = 1  THEN T2$ = "    ": RETURN 
  29. 3040  IF  ASC(T1$) = 13  THEN T2$ =  CHR$(13): RETURN 
  30. 3050  IF  ASC(T1$) <48  OR  ASC(T1$) >57  THEN T2$ = "X": RETURN 
  31. 3055  PRINT T1$;
  32. 3060 T2$ = T2$ +T1$: NEXT : RETURN 
  33. 3080 E2$ = "":EX = 0: FOR K = 1 TO 2: IF AC$ = ""  THEN AC$ = "205"
  34. 3102  VTAB (T -2): HTAB T2: PRINT " ";: CALL 64668: IF K = 2  THEN  VTAB T: HTAB 1: PRINT " ";: CALL 64668: PRINT "SECOND NUMBER ? (Y/N)  ";: GET Z$: IF Z$ =  CHR$(27)  THEN E$(SN) =  LEFT$(E2$,17) +"XX2": HOME : RETURN 
  35. 3103  IF K = 1  AND T < >14  THEN  VTAB T: HTAB 1: PRINT "IS THERE A TELEPHONE NUMBER ? (Y/N) ";: GET Z$: VTAB T: PRINT " ";: CALL 64668: PRINT : IF Z$ =  CHR$(27)  THEN E$(SN) = "XX1": GOTO 3460
  36. 3104  IF K = 1  AND Z$ < >"Y"  AND Z$ < >"y"  AND T < >14  THEN E2$ = "": GOTO 3520
  37. 3105  IF K = 2  AND Z$ < >"Y"  AND Z$ < >"y"  THEN  GOTO 3520
  38. 3110  VTAB (T -2): HTAB T2: PRINT " ";: CALL 64668: PRINT "TELEPHONE NO. ";K;" :": VTAB T: HTAB 1: PRINT " ";: CALL 64668: PRINT "AREA CODE ";AC$;"? (Y/N) ";: GET Z$: IF Z$ =  CHR$(27)  AND K = 2  THEN E$(SN) =  LEFT$(E2$,17) +"XX2": HOME : RETURN 
  39. 3140  IF Z$ =  CHR$(27)  AND K = 1  AND T < >14  THEN E$(SN) = "XX1": GOTO 3460
  40. 3150 T3 = 12:T4 = T2 +4:T6 = T2 +8: IF Z$ = "Y"  OR Z$ = "y"  THEN  GOTO 3220
  41. 3170  VTAB T: HTAB T3: PRINT " ";: CALL 64668
  42. 3180  VTAB T: HTAB T3:N = 3: GOSUB 3000: IF T2$ = "X"  THEN  GOTO 3180
  43. 3200  IF T2$ =  CHR$(13)  THEN T2$ = ""
  44. 3210 E$(SN) = T2$: GOTO 3230
  45. 3220 E$(SN) = AC$
  46. 3230  VTAB T: HTAB T2: PRINT " ";: CALL 64668: IF E$(SN) = ""  THEN  VTAB T: HTAB T2: GOTO 3260
  47. 3250 E$(SN) = E$(SN) +"-": VTAB T: HTAB T2: PRINT E$(SN);
  48. 3260 N = 3: GOSUB 3000: IF T2$ < >"X"  THEN  GOTO 3300
  49. 3280  VTAB T: HTAB T4:N = 3: GOSUB 3000: IF T2$ = "X"  THEN  GOTO 3280
  50. 3300  IF T2$ =  CHR$(13)  THEN T2$ = ""
  51. 3310  IF T2$ = ""  THEN  GOTO 3330
  52. 3320 E$(SN) = E$(SN) +T2$ +"-"
  53. 3330  VTAB T: HTAB T2: PRINT E$(SN);
  54. 3340 N = 4: GOSUB 3000: IF T2$ =  CHR$(13)  THEN T2$ = ""
  55. 3360  IF T2$ < >"X"  THEN  GOTO 3390
  56. 3370  VTAB T: HTAB T6:N = 4: GOSUB 3000: IF T2$ = "X"  THEN  GOTO 3370
  57. 3390 E$(SN) = E$(SN) +T2$: IF ET = 2  THEN T2$ = "    ": GOTO 3445
  58. 3400  VTAB T: HTAB T2: PRINT "EXT. NO. ? (Y/N) ";: GET Z$: IF Z$ =  CHR$(27)  THEN T2$ = "    ": GOTO 3445
  59. 3420  IF Z$ < >"Y"  AND Z$ < >"y"  THEN  GOTO 3460
  60. 3430  VTAB T: HTAB T2 +11: CALL 64668:N = 4:EX = 1: GOSUB 3000:EX = 0: IF T2$ = "X"  THEN  GOTO 3430
  61. 3445  IF  LEN(E$(SN)) <12  THEN  FOR L =  LEN(E$(SN)) +1 TO 12:E$(SN) = E$(SN) +" ": NEXT L
  62. 3450 E$(SN) = E$(SN) +T2$
  63. 3460  IF  LEN(E$(SN)) = 17  THEN  GOTO 3500
  64. 3470  FOR L =  LEN(E$(SN)) +1 TO 17:E$(SN) = E$(SN) +" ": NEXT L
  65. 3500 E2$ = E2$ +E$(SN): PRINT : NEXT K
  66. 3520 E$(SN) = E2$: RETURN 
  67. 4000  VTAB 1: PRINT "ESC TO QUIT": VTAB 10: VTAB 8: PRINT "ENTER NAME TO FIND": VTAB 13: PRINT "______________________________________":X = 0:Y2 = 14:DX = 39:DY = 10: & X,Y2,DX,DY
  68. 4050  HOME : PRINT "FIRST NAME :  ": PRINT : GOSUB 600:T2$ = SX$: IF SX$ =  CHR$(27)  THEN CV = 27: TEXT : RETURN 
  69. 4070  HOME : PRINT "LAST NAME :  ": PRINT : GOSUB 600:T1$ = SX$: IF SX$ =  CHR$(27)  THEN CV = 27: GOTO 4050
  70. 4073  HOME : PRINT "SEARCHING FILE": IF NP = 0  THEN  GOTO 4320
  71. 4080 F5 = 0: FOR J = 1 TO NP: IF T1$ = ""  THEN  GOTO 4170
  72. 4090  IF  LEFT$(T1$,3) =  LEFT$(SA$(J),3)  THEN F5 = F5 +1:F(F5) = J
  73. 4100  NEXT J
  74. 4110  IF F5 = 0  THEN T1$ = "": GOTO 4170
  75. 4120 F6 = 0: FOR J = 1 TO F5: FOR K = 1 TO  LEN(SB$(F(J))): IF T2$ = ""  THEN  GOTO 4220
  76. 4130  IF  LEFT$(T2$,3) =  MID$ (SB$(F(J)),K,3)  THEN F6 = F6 +1:A(F6) = F(J): GOTO 4150
  77. 4140  NEXT K
  78. 4150  NEXT J
  79. 4155  IF F6 = 0  THEN  GOTO 4220
  80. 4160  GOTO 4230
  81. 4170 F6 = 0: FOR J = 1 TO NP: FOR K = 1 TO  LEN(SB$(J)): IF  LEFT$(T2$,3) =  MID$ (SB$(J),K,3)  THEN F6 = F6 +1:A(F6) = J: GOTO 4200
  82. 4180  FOR J = 1 TO NP: FOR K = 1 TO  LEN(SB$(J)): IF  LEFT$(T2$,3) =  MID$ (SB$(J),K,3)  THEN F6 = F6 +1:A(F6) = J: GOTO 4200
  83. 4190  NEXT K
  84. 4200  NEXT J
  85. 4210  GOTO 4230
  86. 4220 F6 = F5: FOR J = 1 TO F5:A(J) = F(J): NEXT 
  87. 4230  HOME : IF F6 = 0  THEN  GOTO 4320
  88. 4240  IF F6 = 1  THEN F6 = A(F6): HOME :Y = F6: TEXT : RETURN 
  89. 4245 A = 2:M = 9:HT = 5:VS = 0: FOR J = 0 TO F6  STEP 8: FOR K = 1 TO 8: IF J +K >F6  THEN  GOTO 4260
  90. 4252 T1 =  LEN(SA$(A(J +K))):T2 = 30 -1 -T1: IF T2 > LEN(SB$(A(J +K)))  THEN T2 =  LEN(SB$(A(J +K)))
  91. 4254  IF T2 = 0  THEN T2 = 1
  92. 4258 PM$(9,K) =  LEFT$(SB$(A(J +K)),T2) +" " +SA$(A(J +K)): NEXT K
  93. 4260 MN(9) = K -1: IF F6 >8  THEN MN(9) = K:PM$(M,K) = "* SEE MORE NAMES *"
  94. 4262  IF F6 >8  AND K = 1  THEN  GOTO 4280
  95. 4264  HOME :VS = 0: TEXT :JS = J: GOSUB 6000:J = JS: IF CV = 27  THEN  TEXT : HOME : RETURN 
  96. 4270  IF CV <MN(9)  THEN CV = CV +J: GOTO 4300
  97. 4275  IF F6 <9  AND CV <MN(9) +1  THEN CV = CV +J: GOTO 4300
  98. 4280  NEXT J: GOTO 4245
  99. 4300 F6 = CV: TEXT :F6 = A(F6): HOME :Y = F6: RETURN 
  100. 4320  TEXT : HOME : VTAB 10: HTAB 8: PRINT "THIS NAME WAS NOT FOUND": PRINT : HTAB 8: PRINT "IN  ";WA$: PRINT :F6 = 0: HTAB 8: PRINT "PRESS A KEY TO CONTINUE  ";: GET Z$: RETURN 
  101. 5000  HOME :T = 14:T2 = 2:SN = NP +1:ET = 2: GOSUB 3080:ET = 0: IF E$(SN) =  CHR$(27)  THEN  RETURN 
  102. 5025  IF NP = 0  THEN  GOTO 5080
  103. 5030 F6 = 0: HOME : HTAB 15: VTAB 10: PRINT "SEARCHING": FOR J = 1 TO NP: IF  LEFT$(E$(J),12) = ""  OR  LEFT$(E$(J),12) = "            "  THEN  GOTO 5052
  104. 5050  IF  LEFT$(E$(J),12) =  LEFT$(E$(SN),12)  THEN F6 = F6 +1:A(F6) = J: GOTO 5060
  105. 5052  IF  MID$ (E$(J),18,12) = ""  OR  MID$ (E$(J),18,12) = "           "  THEN  GOTO 5056
  106. 5055  IF  MID$ (E$(J),18,12) =  MID$ (E$(SN),18,12)  THEN F6 = F6 +1:A(F6) = J: GOTO 5060
  107. 5056  IF  LEFT$(E$(J),12) = ""  OR  LEFT$(E$(J),12) = "            "  THEN  GOTO 5058
  108. 5057  IF  LEFT$(E$(J),12) =  MID$ (E$(SN),18,12)  THEN F6 = F6 +1:A(F6) = J: GOTO 5060
  109. 5058  IF  MID$ (E$(J),18,12) = ""  OR  MID$ (E$(J),18,12) = "           "  THEN  GOTO 5060
  110. 5059  IF  MID$ (E$(J),18,12) =  LEFT$(E$(SN),12)  THEN F6 = F6 +1:A(F6) = J
  111. 5060  NEXT J
  112. 5070  IF F6 >0  THEN  GOTO 5100
  113. 5080  HOME : VTAB 10: HTAB 8: PRINT " THIS NUMBER WAS NOT FOUND ": PRINT : HTAB 8: PRINT " IN  ";WA$: GET Z$: RETURN 
  114. 5100  IF F6 = 1  THEN  GOTO 5150
  115. 5104 M = 10:A = 2:HT = 4:VS = 0: FOR J = 0 TO F6  STEP 8: FOR K = 1 TO 8: IF J +K >F6  THEN  GOTO 5116
  116. 5112 T1 =  LEN(SA$(A(J +K))):T2 = 29 -T1: IF T2 > LEN(SB$(A(J +K)))  THEN T2 =  LEN(SB$(A(J +K)))
  117. 5113  IF T2 < = 0  THEN T2 = 1
  118. 5114 PM$(10,K) =  LEFT$(SB$(A(J +K)),T2) +" " +SA$(A(J +K)): NEXT K
  119. 5116 MN(10) = K -1: IF F6 >8  THEN MN(10) = K:PM$(10,K) = "* SEE MORE NAMES *"
  120. 5118  IF F6 >8  AND K = 1  THEN  GOTO 5130
  121. 5120  HOME :VS = 0:JS = J: GOSUB 6000:J = JS: IF CV = 27  THEN E$(SN) =  CHR$(27): RETURN 
  122. 5126  IF CV <MN(10)  THEN CV = CV +J:F6 = CV: GOTO 5150
  123. 5128  IF F6 <9  AND CV <MN(10) +1  THEN CV = CV +J:F6 = CV: GOTO 5150
  124. 5130  NEXT J: GOTO 5104
  125. 5150 F6 = A(F6): HOME :E$(SN) = "": RETURN 
  126. 6000  GOTO 6200
  127. 6100  PRINT  CHR$(24): INVERSE :T = CV -VS: IF A >1  THEN  GOSUB 6160: RETURN 
  128. 6110  GOSUB 6170: RETURN 
  129. 6130  HTAB HT -3: VTAB CV: PRINT " ";:T = CV -VS: IF A >1  THEN  GOSUB 6160: RETURN 
  130. 6140  GOSUB 6170: RETURN 
  131. 6160  HTAB HT: VTAB VS +T: PRINT "(";T +1;")";" ";PM$(M,T +1);: NORMAL : CALL 64668: RETURN 
  132. 6170  HTAB HT: VTAB VS +T: PRINT "("; LEFT$(PM$(M,T +1),A);")";" ";PM$(M,T +1);: NORMAL : CALL 64668: RETURN 
  133. 6200  IF M = 0  THEN  HOME : PRINT "COPYRIGHT 1987 - JUDY LONG": PRINT "SERIAL NO. 00006"
  134. 6210  IF VS < >0  THEN  HTAB 1: VTAB 1: PRINT MS$(M): GOTO 6240
  135. 6215  IF M < >0  THEN  HOME 
  136. 6220  PRINT MS$(M):VS =  INT(((18 -MN(M))/2) +6): VTAB VS -3: PRINT PM$(M,0)
  137. 6240 T = 0: FOR J = 1 TO MN(M): IF A >1  THEN  GOSUB 6160: GOTO 6290
  138. 6280  GOSUB 6170
  139. 6290 T = T +1: NEXT J
  140. 6320  IF G(M) >0  AND G(M) <25  THEN  VTAB G(M):CV = G(M): GOTO 6360
  141. 6350  VTAB VS:CV = VS
  142. 6360  GOSUB 6370: GOTO 6760
  143. 6370  HTAB HT -3:
  144. 6400  GOSUB 6100: WAIT  -16384,128:Z$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0
  145. 6450  IF Z$ =  CHR$(27)  THEN CV = 27: RETURN 
  146. 6460  IF Z$ =  CHR$(13)  THEN  RETURN 
  147. 6480  IF Z$ =  CHR$(11)  THEN  GOSUB 6130:CV = CV -1: GOTO 6690
  148. 6490  IF Z$ =  CHR$(21)  THEN  GOSUB 6130:CV = CV -1: GOTO 6690
  149. 6500  IF Z$ =  CHR$(10)  THEN  GOSUB 6130:CV = CV +1: GOTO 6690
  150. 6510  IF Z$ =  CHR$(32)  THEN  GOSUB 6130:CV = CV +1: GOTO 6690
  151. 6520  IF Z$ =  CHR$(08)  THEN  GOSUB 6130:CV = CV +1: GOTO 6690
  152. 6540  GOSUB 6130:
  153. 6550 T = 0: FOR J = 1 TO MN(M): IF Z$ =  LEFT$(PM$(M,J),1)  THEN CV = VS +T: GOSUB 6100: FOR DQ = 1 TO 200: NEXT DQ: RETURN 
  154. 6580  IF Z$ =  CHR$( ASC( LEFT$(PM$(M,J),1)) +32)  THEN  GOTO 6600
  155. 6590  GOTO 6610
  156. 6600  IF  ASC(Z$) >96  AND  ASC(Z$) <123  THEN CV = VS +T: GOSUB 6100: FOR DQ = 1 TO 200: NEXT DQ: RETURN 
  157. 6610  IF A >1  AND  VAL(Z$) = J  THEN CV = VS +T: GOSUB 6100: FOR DQ = 1 TO 200: NEXT DQ: RETURN 
  158. 6620 T = T +1: NEXT J
  159. 6650 CV = VS: VTAB VS: HTAB HT -3: GOTO 6400
  160. 6690  IF CV >(VS +MN(M) -1)  THEN CV = VS
  161. 6700  IF CV <VS  THEN CV = (VS +MN(M) -1)
  162. 6720  VTAB CV: HTAB HT -3: GOTO 6400
  163. 6760  IF M <8  THEN G(M) = CV
  164. 6770  IF CV = 27  THEN  RETURN 
  165. 6780  GOSUB 6130:T = 0: FOR J = VS TO (VS +MN(M) -1):T = T +1: IF CV = J  THEN CV = T
  166. 6790  NEXT J: RETURN 
  167. 7000  HOME : GOSUB 7440
  168. 7010  HOME :VT = 7:VB = 16:T = 0: VTAB 1: HTAB 1: PRINT MS$(M): VTAB 3: HTAB 1: PRINT PM$(M,0);" ";Y: FOR J = 1 TO MN(M) -1: HTAB HT: VTAB VT +T: PRINT "("; LEFT$(PM$(M,J),1);")";" ";R$(J);: CALL 64668:T = T +1: NEXT J
  169. 7130  HTAB HT: VTAB VT +T: PRINT "("; LEFT$(PM$(M,J),1);")";" "; LEFT$(R$(J),12);: IF  MID$ (R$(J),13,5) = "     "  OR  MID$ (R$(J),13,5) = ""  THEN  CALL 64668: GOTO 7140
  170. 7135  HTAB 23: VTAB VT +T: PRINT "EXT.NO. "; MID$ (R$(J),13,5);: CALL 64668
  171. 7140  HTAB HT +4: VTAB VT +T +1: PRINT  MID$ (R$(J),18,12);: IF  MID$ (R$(J),30,5) = "     "  OR  MID$ (R$(J),30,5) = ""  THEN  CALL 64668: GOTO 7150
  172. 7145  VTAB VT +T +1: HTAB 23: PRINT "EXT.NO. "; MID$ (R$(J),30,5);: CALL 64668
  173. 7150  VTAB 13: HTAB 1: PRINT "_______________________________________"
  174. 7160 MN(M) = MN(M) +2:PM$(M,MN(M) -1) = "DELETE THIS DATA":PM$(M,MN(M)) = "ACCEPT CHANGES":T = 0: FOR J = 1 TO MN(M): HTAB HB: VTAB VB +T: PRINT "("; LEFT$(PM$(M,J),1);")";" ";PM$(M,J)
  175. 7220 T = T +1: NEXT J:VS = VB:TP = HT:HT = HB: GOSUB 6320:HT = TP:MN(M) = MN(M) -2: IF CV = MN(M) +1  THEN  GOSUB 7290: HOME : GOTO 900
  176. 7270  IF CV = MN(M) +2  THEN  TEXT : HOME : GOSUB 7470: RETURN 
  177. 7280  GOSUB 7290: GOTO 7300
  178. 7290 X = 0:Y2 = 14:DX = 39:DY = 10: & X,Y2,DX,DY: RETURN 
  179. 7300  IF CV = 27  THEN  TEXT : HOME : RETURN 
  180. 7305  GOSUB 7310: GOTO 7160
  181. 7310  IF  LEFT$(PM$(M,CV),1) < >"T"  AND  LEFT$(PM$(M,CV),1) < >"t"  THEN  GOTO 7360
  182. 7320 T = 19:T2 = 2:SN = Y: GOSUB 3080: IF  LEFT$(E$(SN),3) = "XX1"  THEN E$(SN) =  LEFT$(R$(CV),17) + MID$ (E$(SN),18,17)
  183. 7340  IF  MID$ (E$(SN),18,3) = "XX2"  THEN E$(SN) =  LEFT$(E$(SN),17) + MID$ (R$(CV),18,17)
  184. 7350 RH$ = R$(CV):R$(CV) = E$(SN):E$(SN) = RH$: GOTO 7500
  185. 7360  IF CV >2  THEN  GOTO 7390
  186. 7370  HOME : PRINT : PRINT "ENTER ";PM$(M,CV): PRINT : GOSUB 600: IF X$ =  CHR$(27)  THEN  GOTO 7420
  187. 7380 NP% = 1:R$(CV) = X$:R$(CV +MN(M)) = SX$: GOTO 7420
  188. 7390  HOME : PRINT : PRINT "ENTER ";PM$(M,CV): PRINT : GOSUB 600: IF X$ =  CHR$(27)  THEN  GOTO 7420
  189. 7400 NP% = 1:R$(CV) = X$
  190. 7420  VTAB (VT +CV -1): HTAB HT: PRINT "("; LEFT$(PM$(M,CV),1);")";" ";R$(CV);: CALL 64668: HOME : RETURN 
  191. 7440 R$(1) = B$(Y):R$(2) = A$(Y):R$(3) = C$(Y):R$(4) = CC$(Y):R$(5) = E$(Y):R$(6) = SB$(Y):R$(7) = SA$(Y)
  192. 7450  IF  LEN(R$(5)) <17  THEN  FOR Q2 =  LEN(R$(5)) +1 TO 17:R$(5) = R$(5) +" ": NEXT Q2
  193. 7455  RETURN 
  194. 7470 B$(Y) = R$(1):A$(Y) = R$(2):C$(Y) = R$(3):CC$(Y) = R$(4):E$(Y) = R$(5):SB$(Y) = R$(6):SA$(Y) = R$(7): RETURN 
  195. 7500  VTAB (VT +CV -1): HTAB HT: PRINT "("; LEFT$(PM$(M,CV),1);")";" "; LEFT$(R$(CV),12);: IF  MID$ (R$(CV),13,5) = "     "  OR  MID$ (R$(CV),13,5) = ""  THEN  CALL 64668: GOTO 7540
  196. 7530  VTAB (VT +CV -1): HTAB 23: PRINT "EXT.NO. "; MID$ (R$(CV),13,5);: CALL 64668
  197. 7540  VTAB (VT +CV): HTAB HT +4: PRINT  MID$ (R$(CV),18,12);: IF  MID$ (R$(CV),30,5) = "     "  OR  MID$ (R$(CV),30,5) = ""  THEN  CALL 64668: HOME : RETURN 
  198. 7550  VTAB (VT +CV): HTAB 23: PRINT "EXT.NO. "; MID$ (R$(CV),30,5);: CALL 64668: HOME : RETURN 
  199. 8000  IF NP <1  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY": RETURN 
  200. 8005  HOME : PRINT MS$(5): PRINT :M = 5:A = 1:HT = 8:VS = 16: IF J% <1  THEN J% = 1
  201. 8010  FOR Y = J% TO NP
  202. 8030  HTAB 1: PRINT PM$(5,0);" ";Y;: CALL 64668: GOSUB 700: GOSUB 6000: IF CV = 27  THEN  RETURN 
  203. 8110  ON CV GOTO 8120,8140,8160
  204. 8120  IF Y = NP  THEN Y = 0:
  205. 8130  VTAB 3: NEXT Y
  206. 8140  IF Y = 1  THEN Y = NP -1: VTAB 3: NEXT Y
  207. 8150 Y = Y -2: VTAB 3: NEXT Y
  208. 8160 F6 = Y:J% = Y: RETURN 
  209. 10000  IF RM% = 1  THEN  GOTO 10010
  210. 10005  HOME 
  211. 10010  PRINT  CHR$(4);"CHAIN ADD.FILE,@10000"
  212. 11000  HOME 
  213. 11010  HTAB 1: VTAB 23: PRINT  CHR$(4);"CHAIN ADD.FILE,@11000 
  214. 12000  HOME : VTAB 1: HTAB 1: PRINT "ESC TO QUIT "
  215. 12003  IF NP = 100  THEN  HOME : VTAB 10: PRINT "THIS FILE IS TOO LARGE TO CONTINUE.": PRINT : HTAB 7: PRINT "PLEASE SAVE TO DISK": HTAB 7: PRINT "AND START A NEW FILE. ";: GET Z$: GOTO 32000
  216. 12007 NP = NP +1
  217. 12010  VTAB 3: HTAB 1: PRINT PM$(1,0);" ";NP:Y = NP:VT = 7:VB = 16:M = 1:HT = 5:HB = 10: GOSUB 7440: VTAB 13: HTAB 1: PRINT "______________________________________": GOSUB 7290
  218. 12020 T = 0: FOR CV = 1 TO MN(M): GOSUB 7310
  219. 12022  IF X$ =  CHR$(27)  THEN NP = NP -1: TEXT : HOME : GOTO 32000
  220. 12025  NEXT CV: GOSUB 7470
  221. 12030  HOME : HTAB 2: VTAB 23: PRINT "DO YOU WISH TO CHANGE ANYTHING ? ";: GET Z$: IF Z$ < >"Y"  AND Z$ < >"y"  THEN  TEXT : GOTO 12000
  222. 12040  TEXT : HOME : GOSUB 7000: GOTO 12000
  223. 13000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  224. 13010  HOME :M = 3:A = 1:HT = 10:VS = 0: GOSUB 6000: IF CV = 27  THEN  GOTO 32000
  225. 13020  ON CV GOTO 13030,13070,13110
  226. 13030  HOME : GOSUB 4000: IF CV = 27  THEN  GOTO 13000
  227. 13050 Y = F6: IF Y = 0  THEN  GOTO 13000
  228. 13060 M = 1:A = 1:HT = 5:HB = 10: GOSUB 7000: TEXT : HOME : GOTO 13000
  229. 13070  HOME : GOSUB 5000: IF E$(SN) =  CHR$(27)  THEN E$(SN) = "": GOTO 13000
  230. 13090 E$(SN) = "": GOTO 13050
  231. 13110  HOME : GOSUB 8000: IF CV = 27  THEN J% = 0: GOTO 13000
  232. 13115  IF NP <1  THEN  GET Z$: GOTO 32000
  233. 13120  HOME :M = 1:A = 1:HT = 5:HB = 10: GOSUB 7000: TEXT : HOME : GOTO 13110
  234. 14000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  235. 14010  HOME : HTAB 1: VTAB 1: PRINT "ESC TO STOP - SPACE TO CONTINUE": PRINT : FOR J = 1 TO NP:T1 =  LEN(A$(J)):T2 = 36 -T1: IF T2 > LEN(B$(J))  THEN T2 =  LEN(B$(J))
  236. 14017  IF T2 = 0  THEN T2 = 1
  237. 14020  PRINT J: PRINT A$(J);" "; LEFT$(B$(J),T2): PRINT C$(J): PRINT CC$(J): PRINT  LEFT$(E$(J),12);: IF  MID$ (E$(J),13,5) = ""  OR  MID$ (E$(J),13,5) = "     "  THEN  PRINT : GOTO 14034
  238. 14033  PRINT "  EXT.NO. "; MID$ (E$(J),13,5)
  239. 14034  PRINT  MID$ (E$(J),18,12);: IF  MID$ (E$(J),30,5) = ""  OR  MID$ (E$(J),30,5) = "     "  THEN  PRINT : GOTO 14036
  240. 14035  PRINT "  EXT.NO. "; MID$ (E$(J),30,5)
  241. 14036  PRINT : IF J/3 =  INT(J/3)  THEN  GET Z$: HOME : HTAB 1: VTAB 1: PRINT "ESC TO STOP - SPACE TO CONTINUE": PRINT : IF Z$ =  CHR$(27)  THEN  HOME : GOTO 32000
  242. 14050  NEXT J
  243. 14060  PRINT : PRINT " HIT ANY KEY TO CONTINUE": GET Z$: GOTO 32000
  244. 15000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  245. 15010  HOME 
  246. 15020  PRINT  CHR$(4);"CHAIN ADD.FILE,@15000"
  247. 16000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  248. 16010  HOME 
  249. 16020  PRINT D$;"CHAIN ADD.PRT,@16000"
  250. 22000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  251. 22010 M = 3:A = 1:HT = 10:VS = 0: GOSUB 6000: IF CV = 27  THEN  GOTO 32000
  252. 22020  ON CV GOTO 22030,22070,22120
  253. 22030  HOME : GOSUB 4000: IF F6 = 0  THEN  GOTO 22000
  254. 22040  IF CV = 27  THEN  GOTO 22000
  255. 22050  GOSUB 700: GOTO 23000
  256. 22070  HOME : GOSUB 5000: IF E$(SN) =  CHR$(27)  THEN E$(SN) = "": GOTO 22000
  257. 22080  IF E$(SN) =  CHR$(27)  THEN E$(SN) = "": GOTO 22000
  258. 22090 E$(SN) = "": IF F6 = 0  THEN  GOTO 22000
  259. 22110 Y = F6: GOSUB 700: GOTO 23000
  260. 22120  HOME : GOSUB 8000: IF CV = 27  THEN J% = 0: GOTO 22000
  261. 22125  IF NP <1  THEN  GET Z$: GOTO 32000
  262. 22130  HOME : GOSUB 700:
  263. 23000  IF NP < = 1  AND A$(1) = ""  AND B$(1) = ""  AND C$(1) = ""  AND CC$(1) = ""  AND E$(1) = ""  THEN  HOME : VTAB 10: HTAB 10: PRINT "NO DATA IN MEMORY ": HTAB 10: PRINT "PRESS A KEY ";: GET Z$: GOTO 32000
  264. 23010 VS = 16:M = 4:A = 1: GOSUB 6000: IF CV = 27  THEN  GOTO 22000
  265. 23060  ON CV GOTO 23070,23100,23065
  266. 23065 M = 1:A = 1:HT = 5:HB = 10: GOSUB 7000: TEXT : HOME : IF CV = 27  THEN  GOSUB 700: GOTO 23000
  267. 23067  GOTO 22000
  268. 23070  HOME 
  269. 23080  GOSUB 23130: PRINT  CHR$(4);"CHAIN ADD.PRT,@23080"
  270. 23100  HOME 
  271. 23105  GOSUB 23130: PRINT  CHR$(4);"CHAIN ADD.PRT,@23110":
  272. 23110  HOME 
  273. 23112  PRINT  CHR$(4);"CHAIN ADD.PRT,@23110"
  274. 23115  HOME : GOSUB 700: GOTO 23000
  275. 23116  GOTO 22000
  276. 23130 SNP = NP:NP = 1:T1$ = A$(1):T2$ = B$(1):T3$ = C$(1):T4$ = CC$(1):T5$ = E$(1):A$(1) = A$(F6):B$(1) = B$(F6):C$(1) = C$(F6):CC$(1) = CC$(F6):E$(1) = E$(F6): RETURN 
  277. 24000  IF NP% < >1  THEN  GOTO 24400
  278. 24010  HOME : VTAB 10: HTAB 8: PRINT "YOU MUST SAVE YOUR CURRENT ": HTAB 8: PRINT "DATA BEFORE CONTINUING": PRINT : HTAB 8: PRINT "PRESS ESC IF YOU DO NOT": HTAB 8: PRINT "CARE TO SAVE YOUR DATA": HTAB 8: PRINT "(IT WILL BE LOST) ";: GET Z$
  279. 24020  IF Z$ =  CHR$(27)  THEN  GOTO 24400
  280. 24030  GOTO 15000
  281. 24400 TM% = RM%:RM% = 0
  282. 24402  HOME 
  283. 24403 RM% = TM%
  284. 24405  PRINT  CHR$(4);"PREFIX ";PR$
  285. 24410  PRINT  CHR$(4);"RUN ";PR$;"ADD.HELP"
  286. 24500  GOTO 32000
  287. 25000  HOME 
  288. 25010  PRINT  CHR$(4),"CHAIN ADD.INIT,@25000"
  289. 32000 A = 1:M = 0:HT = 10:VS = 0: GOSUB 6000: FOR J = 1 TO 11:G(J) = 0: NEXT 
  290. 32230  ON CV GOTO 11000,12000,13000,22000,14000,16000,100,15000,10000,25000,24000,33000
  291. 32240  GOTO 32000
  292. 33000  HOME : VTAB 10: HTAB 8: PRINT " DO YOU WISH TO EXIT ?  ";: GET Z$: IF Z$ = "Y"  OR Z$ = "y"  THEN  GOTO 33040
  293. 33020  GOTO 32000
  294. 33040  IF NP% = 0  THEN  GOTO 33290
  295. 33050  HOME : VTAB 10: HTAB 8: PRINT " YOUR DATA HAS BEEN ALTERED ": HTAB 8: PRINT " SINCE YOU SAVED TO DISK": PRINT : HTAB 8: PRINT " DO YOU WISH TO SAVE YOUR ": HTAB 8: PRINT " PRESENT DATA TO DISK  ?  ";: GET Z$
  296. 33055  IF Z$ =  CHR$(27)  THEN  GOTO 32000
  297. 33060  IF Z$ = "Y"  OR Z$ = "y"  THEN  GOTO 15000
  298. 33290  HOME 
  299. 33300  PRINT  CHR$(4);"PREFIX ";PR$: HOME 
  300. 33310  PRINT  CHR$(4);"BYE"
  301. 40000  PRINT  CHR$(4);"SAVE /RAM/ADD.ENTER"
  302. 42000  PRINT  CHR$(4);"PREFIX /RAM/": GOTO 32000